1. Statement of the Technical Field
The present invention relates to the field of platform independent computing and more particularly to the management of platform independence for distributable objects in a platform independent computing application.
2. Description of the Related Art
Platform independent computing represents a modern advancement in computer science. The dawn of personal computing initially permitted only platform specific computing in which computer programs could be developed utilizing a particular computer programming language. To transform the generic source code of a computer program to object code required the use of a platform specific compiler and, for more complex programs, a platform specific linker. In particular, the platform specific compiler could be configured to translate the high level source code of the programming language to the specific machine instructions of a particular platform.
Several advantages are known to be associated with traditional, platform specific software development. Most notably, modern, platform specific compilers are known to be tightly coupled to hardware architecture of the underlying computing platform. Consequently, tremendous computing efficiencies can be recognized as the source code for a computer program can be tailored into very specific and highly efficient machine code for a target platform. Yet, platform specific software cannot be easily distributed across computing networks because in many circumstances, the ultimate host platform can differ from the target platform of the compiler which produced the platform specific code.
To address the desire to distribute computer programs to multiple, different host platforms without requiring the distribution of different versions of the same computing object, computer scientists developed platform independent computing technologies such as the Java, Erlang, Dylan and C# computing languages and associated development tools. Platform independent computing technologies allow software developers to develop a single set of source code for all target computing platforms. Compilers for platform independent computing languages typically produce intermediate byte code which can be interpreted at runtime in the target platform utilizing a virtual machine for a platform specific runtime environment.
A virtual machine within a runtime environment generally operates by loading required program objects when required through the operation of a class loader. In particular, class loaders provide the translation technology which can convert serialized byte code into named classes for execution in the virtual machine. Notably, class loaders can perform this conversion regardless of the storage means and location of the byte code. As a result, the virtual machine need not know the operational specifics associated with the file systems storing the byte code.
To address the desire to distribute computer programs to multiple, different host platforms without requiring the distribution of different versions of the same computing object, computer scientists developed platform independent computing technologies such as the JAVA™, ERLANG™, DYLAN™ and C#™ computing languages and associated development tools. Platform independent computing technologies allow software developers to develop a single set of source code for all target computing platforms. Compilers for platform independent computing languages typically produce intermediate byte code which can be interpreted at runtime in the target platform utilizing a virtual machine for a platform specific runtime environment.
Many assume that the performance problem of the platform independent paradigm has become insurmountable and have accepted the associated performance deficiencies. Yet others refuse to accept these deficiencies and, to address the operational deficiencies of such an environment, many developers resort to coding platform specific code for performance critical sections of a computer program. Yet, to do so can break the platform independence of the computer program.